#ifndef BOIDSPACESHIP_H
#define BOIDSPACESHIP_H

#include "BoidBase.h"

/**
 * Class BoidSpaceShip
 */
class BoidSpaceShip : public BoidBase
{
protected:
	/// velocity of space ship.
	Ogre::Vector3 mVelocity;

	/// maximum velocity magnitute.
	float mMaxVelMag;

	/// trust of the spaceship.
	float mForceMag;

	/// reverse reverse trust of the spaceship.
	float mReverseForceMag;

	Ogre::Radian mMaxTurning;
	Ogre::Radian mMaxRoll;

public:
	/// constructor.
	BoidSpaceShip(OgreOde::Body *mBody, float maxVelMag, float forceMag,
		float reverseForceMag, Ogre::Radian maxTurning, Ogre::Radian maxRoll);

	/// returns the velocity of this boid.
	const Ogre::Vector3& getVelocity() const
	{ return mVelocity; }

	/// steer boid base on desired steering vector.
	void steerBoid(const Ogre::Vector3& desiredVector);

};

typedef Ogre::SharedPtr<BoidSpaceShip> BoidSpaceShipPtr;

#endif // BOIDSPACESHIP_H
